// Server API makes it possible to hook into various parts of Gridsome
// on server-side and add custom data to the GraphQL data layer.
// Learn more: https://gridsome.org/docs/server-api/

// Changes here require a server restart.
// To restart press CTRL + C in terminal and run `gridsome develop`

const baseUrl = `https://api.github.com/users/wiolem`
const axios = require("axios");
const github = (path) => axios(`${baseUrl}/${path}`);

module.exports = function(api) {
  api.loadSource(async ({ addCollection }) => {
    const keys = ["followers", "following", "repos"];
    const list = await Promise.all(keys.map(github));
    const user = addCollection("user");
    const { data } = await axios(baseUrl);
    user.addNode(data);
    list.forEach(({ data }, idx) => {
      const collection = addCollection(keys[idx]);
      data.forEach((v) => collection.addNode(v));
    });
  });

  api.createPages(({ createPage }) => {
    // Use the Pages API here: https://gridsome.org/docs/pages-api/
  });
};
